The present invention relates to the field of graphical programming and virtual instrumentation. In particular, the invention relates to a system and method wherein a graphical program block diagram executes on a server computer, and one or more client computers receive and display a graphical program user interface panel corresponding to the block diagram, wherein the graphical program user interface panel can be used to provide input to or display output to from the block diagram. The present invention further relates to a distributed virtual instrumentation system, wherein a block diagram executes on a server computer and one or more front panels are displayed on client computers.
Traditionally, high level text-based programming languages have been used by programmers in writing application programs. Many different high level text-based programming languages exist, including BASIC, C, FORTRAN, Pascal, COBOL, ADA, APL, etc. Programs written in these high level languages are translated to the machine language level by translators known as compilers or interpreters. The high level text-based programming languages in this level, as well as the assembly language level, are referred to as text-based programming environments.
Increasingly, computers are required to be used and programmed by those who are not highly trained in computer programming techniques. When traditional text-based programming environments are used, the user""s programming skills and ability to interact with the computer system often become a limiting factor in the achievement of optimal utilization of the computer system.
There are numerous subtle complexities which a user must master before he can efficiently program a computer system in a text-based environment. The task of programming a computer system to model a process often is further complicated by the fact that a sequence of mathematical formulas, mathematical steps or other procedures customarily used to conceptually model a process often does not closely correspond to the traditional text-based programming techniques used to program a computer system to model such a process. In other words, the requirement that a user program in a text-based programming environment places a level of abstraction between the user""s conceptualization of the solution and the implementation of a method that accomplishes this solution in a computer program. Thus, a user often must substantially master different skills in order to both conceptually model a system and then to program a computer to model that system. Since a user often is not fully proficient in techniques for programming a computer system in a text-based environment to implement his model, the efficiency with which the computer system can be utilized to perform such modeling often is reduced.
Examples of fields in which computer systems are employed to model and/or control physical systems are the fields of instrumentation, process control, industrial automation, and simulation. Computer modeling or control of devices such as instruments or industrial automation hardware has become increasingly desirable in view of the increasing complexity and variety of instruments and devices available for use. However, due to the wide variety of possible testing/control situations and environments, and also the wide array of instruments or devices available, it is often necessary for a user to develop a program to control a desired system. As discussed above, computer programs used to control such systems had to be written in conventional text-based programming languages such as, for example, assembly language, C, FORTRAN, BASIC, or Pascal. Traditional users of these systems, however, often were not highly trained in programming techniques and, in addition, traditional text-based programming languages were not sufficiently intuitive to allow users to use these languages without training. Therefore, implementation of such systems frequently required the involvement of a programmer to write software for control and analysis of instrumentation or industrial automation data. Thus, development and maintenance of the software elements in these systems often proved to be difficult.
U.S. Pat. Nos. 4,901,221; 4,914,568; 5,291,587; 5,301,301; and 5,301,336; among others, to Kodosky et al disclose a graphical system and method for modeling a process, i.e., a graphical programming environment, which enables a user to easily and intuitively model a process. The graphical programming environment disclosed in Kodosky et al can be considered the highest and most intuitive way in which to interact with a computer. A graphically based programming environment can be represented at a level above text-based high level programming languages such as C, Pascal, etc. The method disclosed in Kodosky et al allows a user to construct a diagram using a block diagram editor, such that the diagram created graphically displays a procedure or method for accomplishing a certain result, such as manipulating one or more input variables to produce one or more output variables. In response to the user constructing a data flow diagram or graphical program using the block diagram editor, data structures may be automatically constructed which characterize an execution procedure which corresponds to the displayed procedure. The graphical program may be compiled or interpreted by a computer using these data structures. Therefore, a user can create a computer program solely by using a graphically based programming environment. This graphically based programming environment may be used for creating virtual instrumentation systems, industrial automation systems, modeling processes, and simulation, as well as for any type of general programming.
Therefore, Kodosky et al teaches a graphical programming environment wherein a user places or manipulates icons in a block diagram using a block diagram editor to create a graphical xe2x80x9cprogram.xe2x80x9d A graphical program for controlling or modeling devices, such as instruments, processes or industrial automation hardware, is referred to as a virtual instrument (VI). In creating a virtual instrument, a user may create a front panel or user interface panel. The front panel includes various front panel objects, such as controls or indicators, that represent or display the respective input and output that will be used by the graphical program or VI, and may include other icons which represent devices being controlled. When the controls and indicators are created in the front panel, corresponding icons or terminals may be automatically created in the block diagram by the block diagram editor. Alternatively, the user can place terminal icons or input/output blocks in the block diagram which may cause the display of corresponding front panel objects in the front panel, either at edit time or at run time.
During creation of the graphical program, the user selects various functions that accomplish his desired result and connects the function icons together. For example, the functions may be connected in a data flow and/or control flow format. The functions may be connected between the terminals of the respective controls and indicators. For example, the user may create or assemble a data flow program, referred to as a block diagram, representing the graphical data flow which accomplishes his desired function. The assembled graphical program may then be compiled or interpreted to produce machine language that accomplishes the desired method or process as shown in the block diagram.
A user may input data to a virtual instrument using front panel controls. This input data propagates through the data flow block diagram or graphical program and appears as changes on the output indicators. In an instrumentation application, the front panel can be analogized to the front panel of an instrument. In an industrial automation application the front panel can be analogized to the MMI (Man Machine Interface) of a device. The user may adjust the controls on the front panel to affect the input and view the output on the respective indicators. Alternatively, the front panel may be used merely to view the input and output, and the input may not be interactively manipulable by the user during program execution.
Thus, graphical programming has become a powerful tool available to programmers. Graphical programming environments such as the National Instruments LabVIEW product have become very popular. Tools such as LabVIEW have greatly increased the productivity of programmers, and increasing numbers of programmers are using graphical programming environments to develop their software applications. In particular, graphical programming tools are being used for test and measurement, data acquisition, process control, man machine interface (MMI), supervisory control and data acquisition (SCADA) applications, simulation, and machine vision applications, among others.
In many scenarios, it would be desirable to further separate the user interface panel, also referred to above as the front panel, of a graphical program from the block diagram of the graphical program. For example, a user developing an instrumentation application, such as a test and measurement application or a process control application, may desire the graphical program to execute on a computer located in a laboratory or manufacturing facility, but may want to interact with the program by viewing the program""s user interface panel from another computer, such as a workstation located in the user""s office. As another example, a program developer may construct a graphical program and desire to enable others to interact with or view the results of the program. For example, the program developer may desire to enable multiple Internet users to connect to the computer running the graphical program and view the graphical program""s user interface.
It would thus be desirable to provide a general system and method for enabling various types of graphical programs having various types of user interface panels to export their user interface panels as described above, with a minimal amount of programming effort. It may also be desirable to provide the above capabilities using common networking and software standards so that users working on various types of computing platforms could connect to the remote computer running the graphical program, view the user interface panel of the graphical program, and possibly also use the user interface panel to remotely use or control the graphical program. It may also be desirable to require users to install a minimal amount of client software in order to gain these abilities, and/or to enable the necessary client software to be automatically downloaded and installed.
The problems outlined above may in large part be solved by providing a system and method enabling distributed display of the user interface of a graphical program executing on a server computer. In one embodiment, the system includes a server computer where a graphical program executes, and one or more client computers connected to the server computer which receive and display a user interface, e.g., one or more user interface panels, corresponding to the graphical program. In one embodiment, the user interface can be used from the client computer(s) to provide input to or display output from the graphical program during program execution. In one specific embodiment, the invention may comprise a distributed virtual instrumentation system, wherein a graphical program executes on a server computer to perform a measurement or automation function, and one or more front panels are displayed on client computers, thus enabling one or more users to remotely view and/or control the measurement or automation function.
In one embodiment, a user of a client computer specifies a remote server computer on which a graphical program executes. The remote server information may be specified in various ways. For example, the information may be specified as a uniform resource locator (URL), as an internet protocol (IP) address, as a machine name and TCP/IP port number, etc. In one embodiment, a user may specify the remote computer by entering a URL into an application such as a web browser or other application with web-browsing functionality. As described below, the application may include a protocol handler plug-in enabled to process the URL and connect to the remote computer.
When the user specifies the remote computer running the graphical program, the user may also specify the particular graphical program desired. For example, a parameter indicating the name of the graphical program may be appended to the URL, etc. The user may also specify the remote computer without also specifying the particular graphical program. For example, the remote computer may comprise a web server. The user may enter the URL of a web page associated with the web server, and the web server may return a list of graphical programs running on the remote computer. The user may then select one or more graphical programs from this list. The user""s client software is operable to then display the user interface panels associated with the selected graphical program(s) on the user""s display screen.
In one embodiment, the user""s client software comprises a web browser (or application with web-browsing functionality) with a plug-in operable to communicate with the remote graphical program. In this embodiment, the plug-in may display the user interface panel directly in the web browser""s window. The user""s client software preferably communicates with an agent or software program running on the remote computer using a communication protocol based on the standard TCP/IP protocol. When the user specifies the remote computer for a connection, the agent on the remote computer transfers a description of the graphical program""s user interface panel to the user""s client software. This description may be sent in the same format used to store the user interface panel information on the remote computer. The user interface panel description may, of course, be sent in various other formats, e.g., as an XML description. The user""s client-side software, e.g., web browser plug-in, is preferably enabled to interpret any type of user interface panel description that it may receive from the remote computer, and is enabled to appropriately display the user interface panel to the user.
Once the graphical program""s user interface panel is received and displayed on the user""s display screen, the user interface panel may be dynamically updated during execution of the graphical program block diagram. For example, the user interface panel may include a graph which displays various types of measurement data produced by the block diagram, such as an electrical signal, meteorological data, etc., and this graph may scroll on the user""s display as the measured data values change in response to graphical program execution. As another example, the user interface panel may comprise numerical text indicators that are updated with new values periodically, etc.
The user may also interact with the user interface panel on the client computer to provide input to the block diagram executing on the server computer, e.g. by issuing standard point-and-click type GUI commands. The user""s input is passed to the remote graphical program on the server computer, and the graphical program responds accordingly. In other words, the user may interact with the remote graphical program exactly as he would interact with the program if it were running locally on the user""s computer. A means for coordinating control among users may be included so that multiple users interacting with the same graphical program do not interfere with each others"" actions.
As described below, in one embodiment, a user may also request and receive the remote graphical program""s block diagram, e.g., to edit or debug the graphical program.
As noted above, in the preferred embodiment, a TCP/IP-based communication protocol is used for communication between the user""s client software and the remote server computer executing the graphical program. In an alternative embodiment the DataSocket system and method, disclosed in U.S. patent application Ser. No. 09/185,161 now U.S. Pat. No. 6,370,569, may be used to facilitate the communication between the user""s client software and the remote computer running the graphical program. The DataSocket system comprises a client software component that addresses data sources/targets using a URL, much the way that a URL is used to address web pages anywhere in the world.
In one embodiment, the remote graphical program executes within a graphical programming environment including functionality referred to as xe2x80x9cVI Serverxe2x80x9d. VI Server functionality may be used to enable user clients to connect to and interact with a remote graphical program. For more information on VI Server, please refer to the patent applications incorporated by reference below.